package com.xuelang.pipeline.domain.application.service;

import com.xuelang.pipeline.client.application.dto.ApplicationQuery;
import com.xuelang.pipeline.client.common.result.PageRecord;
import com.xuelang.pipeline.domain.application.Application;

import java.util.List;

/**
 * 应用领域服务类
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface ApplicationDomainService {
    /**
     * 获取应用列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param applicationQuery
     * @return
     */
    PageRecord<Application> pageList(long currentPage, long pageSize, ApplicationQuery applicationQuery);
    /**
     * 获取应用列表，有过滤条件
     *
     * @param applicationQuery
     * @return
     */
    List<Application> list(ApplicationQuery applicationQuery);

    /**
     * 新增应用
     *
     * @param application
     * @return
     */
    Boolean save(Application application);

    /**
     * 更新应用
     *
     * @param application
     * @return
     */
    Boolean update(Application application);
    /**
     * 删除应用
     *
     * @param application
     * @return
     */
    Boolean delete(Application application);

    /**
     * 判断应用编码是否存在
     *
     * @param applicationCode
     * @return
     */
    Boolean existsCode(String applicationCode);

    /**
     * 判断应用名称是否存在
     *
     * @param applicationName
     * @param applicationCode
     * @return
     */
    Boolean existsName(String applicationName, String applicationCode);
    /**
     * 查询应用
     *
     * @param applicationCode
     * @return
     */
    Application query(String applicationCode);

    /**
     * 查询指定用户下的应用列表
     *
     * @param userId
     * @param applicationQuery
     * @return
     */
    List<Application> list(String userId, ApplicationQuery applicationQuery);
}
